Cloudflareの証明書の透明性(Certificate Transparency)への取り組みを紹介!
SSL/TLS証明書(以下証明書)には証明書の監視や監査を行って証明書の信頼性を高める「証明書の透明性(Certificate Transparency;以下CT)」という仕組みがあります。
Certificate Transparency : Certificate Transparency
過去には様々な理由により、認証局(CA)から不正な証明書が発行される事例が発生したことから、証明書の信頼性を高めるために、考案されました。
CAが証明書を発行する際には、パブリックなCTログサーバーに発行履歴を登録し、ログサーバーから受け取った署名付きのタイムスタンプ(SCT;Signed Certificate Timestamp)を埋め込んだ証明書を発行します(埋め込まない方法も有り)。
ブラウザは証明書に埋め込まれたSCTを確認し、存在しなければ証明書を不正とみなします(ブラウザによります)。
また、CAやドメイン管理者にとっては、ログサーバーを監視することで、不正に発行された証明書を早期に検知できます。
※図は https://certificate.transparency.dev/howctworks/ から
試しに dev.classmethod.jp の SCT を確認してみましょう。
Embedded Signed Certificate Timestamp List の Log Operator から
- DigiCert
- Cloudflare
の SCT が含まれていることがわかります。
このフレームワークは rfc6962 : Certificate Transparency で標準化されています。
本ブログでは、Cloudflareの証明書の透明性への取り組みについて簡単にご紹介します。
CTログオペレーターとしての Cloudflare Nimbus
CAはドメイン所有者から証明書の発行を依頼された時、CTログオペレーターに証明書(厳密には毒入り(Poison Extension)の事前証明書)を登録し、ログオペレーターから受け取った署名入り SCT(Signed Certificate Timestamp)を証明書に埋め込みます。
Cloudflareはこのログオペレーター(Nimbus)を2018年から運用しています。
Introducing Certificate Transparency and Nimbus
Chromeブラウザは2015年からEVドメインの証明書に対してSCTを要求していましたが、2018年4月末以降は発行されたすべて(EV/CV/DV)の証明書に対してSCTを要求するようになり、CTログサーバーの重要性が増したことを受けての対応です。
Cloudflare以外のログオペレーターとしては
- digicert
- Let's Encrypt
などがいます。
CT ログダッシュボード の Merkle Town サービス
CTログはパブリックであり、だれでもアクセス可能です。
日々大量に登録されるCTログサーバー(Nimbus)を俯瞰するダッシュボードサービスが Merkle Townです。
A tour through Merkle Town, Cloudflare's Certificate Transparency dashboard
- 公開鍵のアルゴリズム
- 署名アルゴリズム
- CA別証明書発行割合
- 主要CAの登録先ログオペレーター
などを俯瞰できます。
最後のメトリックは非常に興味深いです。
AmazonやLet's Encryptのように比較的均等にCTログを登録しているCAが存在する一方で、Geotrust のように偏っているCAも存在します。
CTログの管理に、証明書をリーフとするマークル木(Merkle Tree)が使われているため、サービス名(Merkle Town) に Merkle が含まれています。
証明書発行を通知する Certificate Transparency Monitoring サービス
CTログを利用し、所有するドメインに対して証明書が発行されたときに通知するサービスが「ertificate Transparency Monitoring」です。
- Introducing Certificate Transparency Monitoring
- Certificate Transparency Monitoring · Cloudflare SSL docs
管理画面でサイトを選択し、「SSL/TLS」→「Edge Certificates」→ 「Certificate Transparency Monitoring」からオプトインします。
現時点では、パブリックベータで提供されています。
試しに、AWS Certificate Managerで新規SSL証明書を発行すると、20分程度でアラートメールが届きました。
CT黎明期の2015年には、著名企業のEV証明書が不正に発行され、CT ログから検知されるという CT フレームワークの成功事例も有りましたね。
Google Online Security Blog: Improved Digital Certificate Security
最後に
TLS/SSL証明書には、証明書の発行状況を監視・監査する証明書の透明性(Certificate Transparency/CT)という仕組みがあります。
CTを活用することで、意図せず発行された証明書を早期に検知することが期待できます。
本記事では、CloudflareのCTへの取り組みを紹介しました。
なお、CTは不正な証明書の危険性を緩和するものであり、不正な証明書の発行を防ぐわけではない点にご留意ください。
それでは。